perm filename CLPLST.F4[P,LCS] blob
sn#039041 filedate 1974-02-12 generic text, type T, neo UTF8
00100 SUBROUTINE CLIPS
00200
00300 C OCTOBER 22, 68
00400
00500 COMMON /EDGEC/ A0,A1,A2,A3,A4,A5,A6,A7,
00600 1 DEBUG,T,XP,YP,PARMAX,
00700 1 HALF,DIF,RR,COH,RX,RY,CL,SL,D,B,FOUND
00800
00900 COMMON /LISTC/ LIST,LIST5,NEWEND,LO
01000
01100 COMMON/COMMAC/BCLIP,TCLIP,BITS,IWID,LINLEN,FLINE,LLINE,
01200 1 LSIDE,RSIDE,DTA,HYSTAB
01300
01400 DIMENSION LIST5(0/1000),LIST(6,1000),
01500 1 XP(0/176),YP(0/176),T(0/1415),HYSTAB(0/15)
01600
01700 INTEGER BCLIP,TCLIP,FLINE,LLINE,LSIDE,RSIDE,
01800 1 HYSTAB,IB,HEL,I,HYSSUM
01900
02000 REAL INT,HIG,QAL,QALOLD,NUPO,CENTER,DEVIAT
02100
02200 LOGICAL FIRST,BOO1,BOO2
02300
02400 NUPO=((LLINE-FLINE+1)/2)*(RSIDE-LSIDE+1)
02500 HYSSUM=0
02600 CENTER=0.0
02700 DO 2 IB=0,15
02800 CENTER=CENTER+HYSTAB(IB)*IB
02900 2 HYSSUM=HYSSUM+HYSTAB(IB)
03000 CENTER=CENTER/NUPO
03100 IF(HYSSUM.NE.NUPO) PAUSE 'ERROR IN HISTO'
03200 DEVIAT=0.0
03300 DO 4 IB=0,15
03400 4 DEVIAT=DEVIAT+HYSTAB(IB)*((IB-CENTER)**2)
03500 DEVIAT=SQRT(DEVIAT/NUPO)
03600 6 FORMAT(' DEVIAT=',F5.1/' CENTER=',F5.1/)
03700 TYPE 6,DEVIAT,CENTER
03800
03900 FIRST=.TRUE.
04000 GOTO 23
04100 13 FIRST=.FALSE.
04200 23 QALOLD=-1.E15
04300 INT=(FLOAT(HYSTAB(0))+0.1)/NUPO
04400 DO 43 IB=0,14,2
04500 HIG=FLOAT(HYSTAB(IB)+HYSTAB(IB+1))/NUPO
04600 QAL=FLOAT(IB)/8.0-1.0/(INT*128.0)-32.*(INT**2)-4.0*HIG
04700 IF(QALOLD.GT.QAL) GOTO 43
04800 QALOLD=QAL
04900 IF(.NOT.FIRST) GOTO 33
05000 BCLIP=7-IB/2
05100 GOTO 43
05200 33 TCLIP=IB/2
05300 43 INT=INT+FLOAT(HYSTAB(IB+1)+HYSTAB(IB+2))/NUPO
05400
05500 DO 53 I=0,7
05600 HEL=HYSTAB(I)
05700 HYSTAB(I)=HYSTAB(15-I)
05800 53 HYSTAB(15-I)=HEL
05900 IF(FIRST) GOTO 13
06000 IF(BCLIP.EQ.0) BCLIP=TCLIP
06100 IF(TCLIP.EQ.7) TCLIP=BCLIP
06200 RETURN
06300 END
SUBROUTINE PLUG(OLDEND,RX,RY,V1,V2,D,B)
DIMENSION LIST(6,1000),LIST5(0/1000)
INTEGER OLDEND,NE,NL,LIST5,NEWEND
REAL RX,RY,V1,V2,LIST,D,B
LOGICAL LO
COMMON /LISTC/ LIST,LIST5,NEWEND,LO
NE=LIST5(NEWEND)
IF(NE.LE.1000) GOTO 10
IF(LO) RETURN
LO=.TRUE.
TYPE 5,NE
5 FORMAT(17H PLUGGING STOPPEDI)
RETURN
10 LIST5(NEWEND)=LIST5(NE)
LIST5(NE)=LIST5(OLDEND)
LIST5(OLDEND)=NE
LIST(1,NE)=RX
LIST(2,NE)=RY
LIST(3,NE)=V1
LIST(4,NE)=V2
LIST(5,NE)=D
LIST(6,NE)=B
IF(OLDEND.EQ.NEWEND) NEWEND=NE
RETURN
END
00100 SUBROUTINE STRAIT
00200
00300 C OCTOBER 14, 69
00400
00500 DIMENSION LIST(6,1000),LIST5(0/1000),HYSTAB(0/15),
00600 1 T(0/1415),XP(0/176),YP(0/176)
00700 INTEGER N,NEWEND,M,LIST5,K,I,J,LLINE,RSIDE,FLINE,LSIDE
00800 REAL RX,RY,V1,V2,LIST,D,B,RTO,RR,C,CLP,CL,Q
00900 LOGICAL LO
01000
01100 COMMON /EDGEC/ A0,A1,A2,A3,A4,A5,A6,A7,
01200 1 DEBUG,T,XP,YP,PARMAX,
01300 1 HALF,FILE,RR,COH,RX,RY,CL,SL,D,B,FOUND
01400 COMMON /LISTC/ LIST,LIST5,NEWEND,LO
01500 COMMON/COMMAC/BCLIP,TCLIP,BITS,IWID,LINLEN,FLINE,LLINE,
01600 1 LSIDE,RSIDE,DTA,HYSTAB
01700
01800 RTO=0.937
01900 LSIDE=IFIX(LSIDE*RTO+0.5)
02000 RSIDE=IFIX(RSIDE*RTO+0.5)
02100 C=LLINE+FLINE
02200
02300 C EXCHANGING CONTENTS OF N AND M
02400 DO 20 N=1,1000
02500 I=N-1
02600 M=LIST5(I)
02700 IF(N.EQ.M) GOTO 15
02800
02900 C FIND THE I SUCH THAT LIST5(I).EQ.N
03000 5 J=LIST5(I)
03100 IF(J.EQ.N) GOTO 7
03200 I=J
03300 IF(I.NE.NEWEND) GOTO 5
03400
03500 PAUSE 'NEWEND EXCEEDED'
03600 7 LIST5(I)=M
03700 LIST5(N-1)=N
03800 K=LIST5(N)
03900 LIST5(N)=LIST5(M)
04000 LIST5(M)=K
04100
04200 RX=LIST(1,N)
04300 RY=LIST(2,N)
04400 V1=LIST(3,N)
04500 V2=LIST(4,N)
04600 D=LIST(5,N)
04700 B=LIST(6,N)
04800 DO 10 I=1,6
04900 10 LIST(I,N)=LIST(I,M)
05000 LIST(1,M)=RX
05100 LIST(2,M)=RY
05200 LIST(3,M)=V1
05300 LIST(4,M)=V2
05400 LIST(5,M)=D
05500 LIST(6,M)=B
05600
05700 IF(M.EQ.NEWEND) PAUSE 'ERROR IN STRAIT'
05800 IF(N.EQ.NEWEND) NEWEND=M
05900 GOTO 20
06000 15 IF(N.NE.NEWEND) GOTO 20
06100
06200 DO 17 N=1,NEWEND
06300 LIST(1,N)=LIST(1,N)*RTO
06400 LIST(2,N)=-LIST(2,N)+C
06500 CL=-LIST(3,N)
06600 CLP=LIST(4,N)*RTO
06700 Q=SQRT(CLP**2+CL**2)
06800 LIST(3,N)=CL/Q
06900 LIST(4,N)=CLP/Q
07000 17 CONTINUE
07100
07200 RR=RR*(RTO+1.0)/2.0
07300
07400 RETURN
07500 20 CONTINUE
07600 PAUSE 'END NOT FOUND'
07700 CALL EXIT
07800 END